import 'dart:async';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:flutter/cupertino.dart';
import 'news_list.dart';


class NewTab{
  NewTab(this.title,this.newsList);
  String title;
  NewsList newsList;
}


class NewsPage extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => new NewsPageState();
}

class NewsPageState extends State<NewsPage> {
  //定义一个News数组，用于存放标签栏的内容以及对应获取的新闻类型参数,这里我定义了8个标签栏，分别对应不同的新闻类型
  final List<NewTab> news = <NewTab>[
    new NewTab('头条', new NewsList(newType: 'top',)),
    new NewTab('社会', new NewsList(newType: 'shehui',)),
    new NewTab('娱乐', new NewsList(newType: 'yule',)),
    new NewTab('体育', new NewsList(newType: 'tiyu',)),
    new NewTab('科技', new NewsList(newType: 'keji',)),
    new NewTab('国际', new NewsList(newType: 'guoji',)),
  ];

  @override
  Widget build(BuildContext context) {
    //返回一个默认的tab控制器，用于tabBar和tabBarView的联动控制
    return new DefaultTabController(
      //length表示一个有几个标签栏
      length: news.length,
      //返回一个包含了appBar和body内容区域的脚手架
      child: new Scaffold(
        appBar: new AppBar(
          title: new Text('TabBar'),
          //标签栏位置存于appBar的底部，tabs是一个widget数组，就是每个标签栏的内容
          bottom: new TabBar(
            tabs: news.map((NewTab newTab){
              return new Tab(
                text: newTab.title,
              );
            }).toList(),
            //这表示当标签栏内容超过屏幕宽度时是否滚动，因为我们有8个标签栏所以这里设置是
            isScrollable: true,
            //标签颜色
            labelColor: Colors.orange,
            //未被选中的标签的颜色
            unselectedLabelColor: Colors.white,
            labelStyle: new TextStyle(fontSize: 18.0),
          ),
        ),
        //根据tab内容，我在每个标签对应的视图里放了一个简单的文本，内容就是对应的标签名称。
        body: new TabBarView(
          //controller: ,
          children: news.map((NewTab newTab){
            return newTab.newsList;
          }).toList(),
        ),
      ),
    );
  }
}
